package com.itheima.exception;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice//标记为全局异常处理类
//@RestControllerAdvice = @ControllerAdvice + @ResponseBody 本来返回值是视图名，加上@ResponseBody后返回值就是json
//@ResponseBody处理异常的方法返回值会转换为json后再响应给前端
public class GlobalExceptionHandler {

    //处理异常
    @ExceptionHandler//标记为异常处理方法

    public Result handleException(Exception e){
        log.error("程序出错啦~", e);
        return Result.error("出错啦, 请联系管理员~");
    }

    @ExceptionHandler
    public Result handleDuplicateKeyException(DuplicateKeyException e){
        log.error("程序出错啦~", e);
        String message = e.getMessage();//获取异常信息
        int i = message.indexOf("Duplicate entry");//获取重复的字段
        String errMsg = message.substring(i);//截取重复的字段
        String[] arr = errMsg.split(" ");//将重复的字段以空格分割
        return Result.error( arr[2] + " 已存在");
    }

//    - 删除部门时：如果部门下有员工，则不允许删除该部门，并给前端提示错误信息：对不起，当前部门下有员工，不能直接删除！



}
